home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / AIncludes / QD3DIO.a < prev    next >
Encoding:
Text File  |  1998-08-17  |  29.4 KB  |  1,085 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        QD3DIO.a
  3. ;
  4. ;    Contains:    QuickDraw 3D IO API                                                
  5. ;
  6. ;    Version:    Technology:    Quickdraw 3D 1.5.4
  7. ;                Release:    Universal Interfaces 3.2
  8. ;
  9. ;    Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  10. ;
  11. ;    Bugs?:        For bug reports, consult the following page on
  12. ;                the World Wide Web:
  13. ;
  14. ;                    http://developer.apple.com/bugreporter/
  15. ;
  16. ;
  17.     IF &TYPE('__QD3DIO__') = 'UNDEFINED' THEN
  18. __QD3DIO__ SET 1
  19.  
  20.     IF &TYPE('__QD3D__') = 'UNDEFINED' THEN
  21.     include 'QD3D.a'
  22.     ENDIF
  23.  
  24.     IF &TYPE('__QD3DDRAWCONTEXT__') = 'UNDEFINED' THEN
  25.     include 'QD3DDrawContext.a'
  26.     ENDIF
  27.     IF &TYPE('__QD3DVIEW__') = 'UNDEFINED' THEN
  28.     include 'QD3DView.a'
  29.     ENDIF
  30.  
  31. ; ******************************************************************************
  32. ; **                                                                              **
  33. ; **                                    Basic Types                                 **                                                    
  34. ; **                                                                              **
  35. ; ****************************************************************************
  36.  
  37. ; typedef unsigned char                 TQ3Uns8
  38.  
  39. ; typedef signed char                     TQ3Int8
  40.  
  41. ; typedef unsigned short                 TQ3Uns16
  42.  
  43. ; typedef signed short                     TQ3Int16
  44.  
  45. ; typedef unsigned long                 TQ3Uns32
  46.  
  47. ; typedef signed long                     TQ3Int32
  48.  
  49.     IF TARGET_RT_BIG_ENDIAN THEN
  50. TQ3Uns64                RECORD 0
  51. hi                         ds.l    1                ; offset: $0 (0)
  52. lo                         ds.l    1                ; offset: $4 (4)
  53. sizeof                     EQU *                    ; size:   $8 (8)
  54.                         ENDR
  55. TQ3Int64                RECORD 0
  56. hi                         ds.l    1                ; offset: $0 (0)
  57. lo                         ds.l    1                ; offset: $4 (4)
  58. sizeof                     EQU *                    ; size:   $8 (8)
  59.                         ENDR
  60.     ELSE
  61. TQ3Uns64                RECORD 0
  62. lo                         ds.l    1                ; offset: $0 (0)
  63. hi                         ds.l    1                ; offset: $4 (4)
  64. sizeof                     EQU *                    ; size:   $8 (8)
  65.                         ENDR
  66. TQ3Int64                RECORD 0
  67. lo                         ds.l    1                ; offset: $0 (0)
  68. hi                         ds.l    1                ; offset: $4 (4)
  69. sizeof                     EQU *                    ; size:   $8 (8)
  70.                         ENDR
  71.     ENDIF    ; TARGET_RT_BIG_ENDIAN
  72. ; typedef float                         TQ3Float32
  73.  
  74. ; typedef double                         TQ3Float64
  75.  
  76. ; typedef TQ3Uns32                         TQ3Size
  77.  
  78. ; ******************************************************************************
  79. ; **                                                                              **
  80. ; **                                    File Types                                 **
  81. ; **                                                                              **
  82. ; ****************************************************************************
  83.  
  84.  
  85. ; typedef long                            TQ3FileModeMasks
  86. kQ3FileModeNormal                EQU        0
  87. kQ3FileModeStream                EQU        $01
  88. kQ3FileModeDatabase                EQU        $02
  89. kQ3FileModeText                    EQU        $04
  90. ; typedef unsigned long                 TQ3FileMode
  91.  
  92. ; ******************************************************************************
  93. ; **                                                                              **
  94. ; **                                    Method Types                             **
  95. ; **                                                                              **
  96. ; ****************************************************************************
  97.  
  98. ; *    IO Methods
  99. ; *
  100. ; *    The IO system treats all objects as groups of typed information.
  101. ; *    When you register your element or attribute, the "elementType" is the 
  102. ; *    binary type of your object, the "elementName" the ascii type.
  103. ; *    
  104. ; *    All objects in the metafile are made up of a "root" or parent object which
  105. ; *    defines the instantiated object type. You may define the format of your 
  106. ; *    data any way you wish as long as you use the primitives types above and the
  107. ; *    routines below.
  108. ; *
  109. ; *    Root Objects are often appended with additional child objects, called 
  110. ; *    subobjects. You may append your object with other QuickDraw 3D objects.
  111. ; *    
  112. ; *    Writing is straightforward: an object traverses itself any other objects 
  113. ; *    that make it up, then writes its own data. Writing uses two methods: 
  114. ; *    TQ3XObjectTraverseMethod and TQ3XObjectWriteMethod.
  115. ; *
  116. ; *    The TQ3XObjectTraverseMethod method should:
  117. ; *    + First, Determine if the data should be written 
  118. ; *        - if you don't want to write out your object after examining your
  119. ; *            data, return kQ3Success in your Traverse method without calling
  120. ; *            any other submit calls.
  121. ; *     + Next, calculate the size of your object on disk
  122. ; *     + Gather whatever state from the view you need to preserve
  123. ; *         - you may access the view state NOW, as the state of the
  124. ; *             view duing your TQ3XObjectWriteMethod will not be valid. You may
  125. ; *             pass a temporary buffer to your write method.
  126. ; *     + Submit your view write data using Q3View_SubmitWriteData
  127. ; *         - note that you MUST call this before any other "_Submit" call.
  128. ; *         - you may pass in a "deleteMethod" for your data. This method
  129. ; *             will be called whether or not your write method succeeds or fails.
  130. ; *     + Submit your subobjects to the view
  131. ; *     
  132. ; *     The TQ3XObjectWriteMethod method should:
  133. ; *     + Write your data format to the file using the primitives routines below.
  134. ; *         - If you passed a "deleteMethod" in your Q3View_SubmitWriteData, that
  135. ; *             method will be called upon exit of your write method.
  136. ; *
  137. ; *    Reading is less straightforward because your root object and
  138. ; *    any subobjects must be read inside of your TQ3XObjectReadDataMethod. There 
  139. ; *    is an implicit state contained in the file while reading, which you must 
  140. ; *    be aware of. When you first enter the read method, you must physically 
  141. ; *    read in your data format using the primitives routines until
  142. ; *    
  143. ; *    Q3File_IsEndOfData(file) == kQ3True
  144. ; *    
  145. ; *    Generally, your data format should be self-descriptive such that you do not
  146. ; *    need to call Q3File_IsEndOfData to determine if you are done reading. 
  147. ; *    However, this call is useful for determining zero-sized object or 
  148. ; *    determining the end of an object's data.
  149. ; *    
  150. ; *    Once you have read in all the data, you may collect subobjects. A metafile
  151. ; *    object ONLY has subobjects if it is in a container. The call
  152. ; *    
  153. ; *    Q3File_IsEndOfContainer(file)
  154. ; *    
  155. ; *    returns kQ3False if subobjects exist, and kQ3True if subobjects do not 
  156. ; *    exist.
  157. ; *    
  158. ; *    At this point, you may use
  159. ; *    
  160. ; *    Q3File_GetNextObjectType
  161. ; *    Q3File_IsNextObjectOfType
  162. ; *    Q3File_ReadObject
  163. ; *    Q3File_SkipObject
  164. ; *    
  165. ; *    to iterate through the subobjects until Q3File_IsEndOfContainer(file) 
  166. ; *    is kQ3True.
  167. ; * 
  168.  
  169.  
  170. ; * IO Methods
  171.  
  172.  
  173. kQ3XMethodTypeObjectFileVersion    EQU        'vers'                ; version 
  174. kQ3XMethodTypeObjectTraverse    EQU        'trvs'                ; byte count 
  175. kQ3XMethodTypeObjectTraverseData EQU    'trvd'                ; byte count 
  176. kQ3XMethodTypeObjectWrite        EQU        'writ'                ; Dump info to file 
  177. kQ3XMethodTypeObjectReadData    EQU        'rddt'                ; Read info from file into buffer or, attach read data to parent 
  178. kQ3XMethodTypeObjectRead        EQU        'read'
  179. kQ3XMethodTypeObjectAttach        EQU        'attc'
  180. ; *    TQ3XObjectTraverseMethod
  181. ; *
  182. ; *    For "elements" (meaning "attributes, too), you will be passed NULL for 
  183. ; *    object. Sorry, custom objects will be available in the next major revision.
  184. ; *
  185. ; *    The "data" is a pointer to your internal element data.
  186. ; *
  187. ; *    The view is the current traversal view.
  188.  
  189. ; *  TQ3XObjectTraverseDataMethod
  190.  
  191. ; *  TQ3XObjectWriteMethod
  192.  
  193. ; *  Custom object writing 
  194.  
  195. ;
  196. ; extern TQ3Status Q3XView_SubmitWriteData(TQ3ViewObject view, TQ3Size size, void *data, TQ3XDataDeleteMethod deleteData)
  197. ;
  198.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  199.         IMPORT_CFM_FUNCTION Q3XView_SubmitWriteData
  200.     ENDIF
  201.  
  202. ;
  203. ; extern TQ3Status Q3XView_SubmitSubObjectData(TQ3ViewObject view, TQ3XObjectClass objectClass, unsigned long size, void *data, TQ3XDataDeleteMethod deleteData)
  204. ;
  205.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  206.         IMPORT_CFM_FUNCTION Q3XView_SubmitSubObjectData
  207.     ENDIF
  208.  
  209. ; *  TQ3XObjectReadMethod
  210.  
  211. ; *    TQ3XObjectReadDataMethod
  212. ; *
  213. ; *  For "elements" (meaning "attributes", too), you must allocate stack space 
  214. ; *    and call Q3Set_Add on "parentObject", which is an TQ3SetObject.
  215. ; *
  216. ; *    Otherwise, parentObject is whatever object your element is a subobject of...
  217.  
  218. ; *  TQ3XObjectAttachMethod
  219.  
  220.  
  221.  
  222. ; ******************************************************************************
  223. ; **                                                                              **
  224. ; **                                Versioning                                     **
  225. ; **                                                                              **
  226. ; ****************************************************************************
  227.  
  228. ; typedef unsigned long                 TQ3FileVersion
  229.  
  230.  
  231. ; ******************************************************************************
  232. ; **                                                                              **
  233. ; **                                File Routines                                 **
  234. ; **                                                                              **
  235. ; ****************************************************************************
  236.  
  237. ; * Creation and accessors
  238.  
  239. ;
  240. ; extern TQ3FileObject Q3File_New(void )
  241. ;
  242.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  243.         IMPORT_CFM_FUNCTION Q3File_New
  244.     ENDIF
  245.  
  246. ;
  247. ; extern TQ3Status Q3File_GetStorage(TQ3FileObject theFile, TQ3StorageObject *storage)
  248. ;
  249.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  250.         IMPORT_CFM_FUNCTION Q3File_GetStorage
  251.     ENDIF
  252.  
  253. ;
  254. ; extern TQ3Status Q3File_SetStorage(TQ3FileObject theFile, TQ3StorageObject storage)
  255. ;
  256.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  257.         IMPORT_CFM_FUNCTION Q3File_SetStorage
  258.     ENDIF
  259.  
  260. ; * Opening, and accessing "open" state, closing/cancelling
  261.  
  262. ;
  263. ; extern TQ3Status Q3File_OpenRead(TQ3FileObject theFile, TQ3FileMode *mode)
  264. ;
  265.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  266.         IMPORT_CFM_FUNCTION Q3File_OpenRead
  267.     ENDIF
  268.  
  269. ;
  270. ; extern TQ3Status Q3File_OpenWrite(TQ3FileObject theFile, TQ3FileMode mode)
  271. ;
  272.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  273.         IMPORT_CFM_FUNCTION Q3File_OpenWrite
  274.     ENDIF
  275.  
  276. ;
  277. ; extern TQ3Status Q3File_IsOpen(TQ3FileObject theFile, TQ3Boolean *isOpen)
  278. ;
  279.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  280.         IMPORT_CFM_FUNCTION Q3File_IsOpen
  281.     ENDIF
  282.  
  283. ;
  284. ; extern TQ3Status Q3File_GetMode(TQ3FileObject theFile, TQ3FileMode *mode)
  285. ;
  286.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  287.         IMPORT_CFM_FUNCTION Q3File_GetMode
  288.     ENDIF
  289.  
  290. ;
  291. ; extern TQ3Status Q3File_GetVersion(TQ3FileObject theFile, TQ3FileVersion *version)
  292. ;
  293.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  294.         IMPORT_CFM_FUNCTION Q3File_GetVersion
  295.     ENDIF
  296.  
  297. ;
  298. ; extern TQ3Status Q3File_Close(TQ3FileObject theFile)
  299. ;
  300.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  301.         IMPORT_CFM_FUNCTION Q3File_Close
  302.     ENDIF
  303.  
  304. ;
  305. ; extern TQ3Status Q3File_Cancel(TQ3FileObject theFile)
  306. ;
  307.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  308.         IMPORT_CFM_FUNCTION Q3File_Cancel
  309.     ENDIF
  310.  
  311. ; * Writing (Application)
  312.  
  313. ;
  314. ; extern TQ3Status Q3View_StartWriting(TQ3ViewObject view, TQ3FileObject theFile)
  315. ;
  316.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  317.         IMPORT_CFM_FUNCTION Q3View_StartWriting
  318.     ENDIF
  319.  
  320. ;
  321. ; extern TQ3ViewStatus Q3View_EndWriting(TQ3ViewObject view)
  322. ;
  323.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  324.         IMPORT_CFM_FUNCTION Q3View_EndWriting
  325.     ENDIF
  326.  
  327. ; * Reading (Application)
  328.  
  329. ;
  330. ; extern TQ3ObjectType Q3File_GetNextObjectType(TQ3FileObject theFile)
  331. ;
  332.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  333.         IMPORT_CFM_FUNCTION Q3File_GetNextObjectType
  334.     ENDIF
  335.  
  336. ;
  337. ; extern TQ3Boolean Q3File_IsNextObjectOfType(TQ3FileObject theFile, TQ3ObjectType ofType)
  338. ;
  339.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  340.         IMPORT_CFM_FUNCTION Q3File_IsNextObjectOfType
  341.     ENDIF
  342.  
  343. ;
  344. ; extern TQ3Object Q3File_ReadObject(TQ3FileObject theFile)
  345. ;
  346.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  347.         IMPORT_CFM_FUNCTION Q3File_ReadObject
  348.     ENDIF
  349.  
  350. ;
  351. ; extern TQ3Status Q3File_SkipObject(TQ3FileObject theFile)
  352. ;
  353.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  354.         IMPORT_CFM_FUNCTION Q3File_SkipObject
  355.     ENDIF
  356.  
  357. ;
  358. ; extern TQ3Boolean Q3File_IsEndOfData(TQ3FileObject theFile)
  359. ;
  360.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  361.         IMPORT_CFM_FUNCTION Q3File_IsEndOfData
  362.     ENDIF
  363.  
  364. ;
  365. ; extern TQ3Boolean Q3File_IsEndOfContainer(TQ3FileObject theFile, TQ3Object rootObject)
  366. ;
  367.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  368.         IMPORT_CFM_FUNCTION Q3File_IsEndOfContainer
  369.     ENDIF
  370.  
  371. ;
  372. ; extern TQ3Boolean Q3File_IsEndOfFile(TQ3FileObject theFile)
  373. ;
  374.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  375.         IMPORT_CFM_FUNCTION Q3File_IsEndOfFile
  376.     ENDIF
  377.  
  378. ;     
  379. ; *  External file references
  380.  
  381. ;
  382. ; extern TQ3Status Q3File_MarkAsExternalReference(TQ3FileObject theFile, TQ3SharedObject sharedObject)
  383. ;
  384.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  385.         IMPORT_CFM_FUNCTION Q3File_MarkAsExternalReference
  386.     ENDIF
  387.  
  388. ;
  389. ; extern TQ3GroupObject Q3File_GetExternalReferences(TQ3FileObject theFile)
  390. ;
  391.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  392.         IMPORT_CFM_FUNCTION Q3File_GetExternalReferences
  393.     ENDIF
  394.  
  395. ;     
  396. ; *  Tracking editing in read-in objects with custom elements
  397.  
  398. ;
  399. ; extern TQ3Status Q3Shared_ClearEditTracking(TQ3SharedObject sharedObject)
  400. ;
  401.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  402.         IMPORT_CFM_FUNCTION Q3Shared_ClearEditTracking
  403.     ENDIF
  404.  
  405. ;
  406. ; extern TQ3Boolean Q3Shared_GetEditTrackingState(TQ3SharedObject sharedObject)
  407. ;
  408.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  409.         IMPORT_CFM_FUNCTION Q3Shared_GetEditTrackingState
  410.     ENDIF
  411.  
  412. ;     
  413. ; *  Reading objects inside a group one-by-one
  414.  
  415.  
  416. ; typedef long                            TQ3FileReadGroupStateMasks
  417. kQ3FileReadWholeGroup            EQU        0
  418. kQ3FileReadObjectsInGroup        EQU        $01
  419. kQ3FileCurrentlyInsideGroup        EQU        $02
  420. ; typedef unsigned long                 TQ3FileReadGroupState
  421.  
  422. ;
  423. ; extern TQ3Status Q3File_SetReadInGroup(TQ3FileObject theFile, TQ3FileReadGroupState readGroupState)
  424. ;
  425.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  426.         IMPORT_CFM_FUNCTION Q3File_SetReadInGroup
  427.     ENDIF
  428.  
  429. ;
  430. ; extern TQ3Status Q3File_GetReadInGroup(TQ3FileObject theFile, TQ3FileReadGroupState *readGroupState)
  431. ;
  432.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  433.         IMPORT_CFM_FUNCTION Q3File_GetReadInGroup
  434.     ENDIF
  435.  
  436.  
  437. ; * Idling
  438.  
  439. ;
  440. ; extern TQ3Status Q3File_SetIdleMethod(TQ3FileObject theFile, TQ3FileIdleMethod idle, const void *idleData)
  441. ;
  442.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  443.         IMPORT_CFM_FUNCTION Q3File_SetIdleMethod
  444.     ENDIF
  445.  
  446.  
  447. ; ******************************************************************************
  448. ; **                                                                              **
  449. ; **                                Primitives Routines                             **
  450. ; **                                                                              **
  451. ; ****************************************************************************
  452.  
  453. ;
  454. ; extern TQ3Status Q3NewLine_Write(TQ3FileObject theFile)
  455. ;
  456.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  457.         IMPORT_CFM_FUNCTION Q3NewLine_Write
  458.     ENDIF
  459.  
  460. ;
  461. ; extern TQ3Status Q3Uns8_Read(TQ3Uns8 *data, TQ3FileObject theFile)
  462. ;
  463.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  464.         IMPORT_CFM_FUNCTION Q3Uns8_Read
  465.     ENDIF
  466.  
  467. ;
  468. ; extern TQ3Status Q3Uns8_Write(TQ3Uns8 data, TQ3FileObject theFile)
  469. ;
  470.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  471.         IMPORT_CFM_FUNCTION Q3Uns8_Write
  472.     ENDIF
  473.  
  474. ;
  475. ; extern TQ3Status Q3Uns16_Read(TQ3Uns16 *data, TQ3FileObject theFile)
  476. ;
  477.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  478.         IMPORT_CFM_FUNCTION Q3Uns16_Read
  479.     ENDIF
  480.  
  481. ;
  482. ; extern TQ3Status Q3Uns16_Write(TQ3Uns16 data, TQ3FileObject theFile)
  483. ;
  484.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  485.         IMPORT_CFM_FUNCTION Q3Uns16_Write
  486.     ENDIF
  487.  
  488. ;
  489. ; extern TQ3Status Q3Uns32_Read(TQ3Uns32 *data, TQ3FileObject theFile)
  490. ;
  491.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  492.         IMPORT_CFM_FUNCTION Q3Uns32_Read
  493.     ENDIF
  494.  
  495. ;
  496. ; extern TQ3Status Q3Uns32_Write(TQ3Uns32 data, TQ3FileObject theFile)
  497. ;
  498.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  499.         IMPORT_CFM_FUNCTION Q3Uns32_Write
  500.     ENDIF
  501.  
  502. ;
  503. ; extern TQ3Status Q3Int8_Read(TQ3Int8 *data, TQ3FileObject theFile)
  504. ;
  505.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  506.         IMPORT_CFM_FUNCTION Q3Int8_Read
  507.     ENDIF
  508.  
  509. ;
  510. ; extern TQ3Status Q3Int8_Write(TQ3Int8 data, TQ3FileObject theFile)
  511. ;
  512.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  513.         IMPORT_CFM_FUNCTION Q3Int8_Write
  514.     ENDIF
  515.  
  516. ;
  517. ; extern TQ3Status Q3Int16_Read(TQ3Int16 *data, TQ3FileObject theFile)
  518. ;
  519.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  520.         IMPORT_CFM_FUNCTION Q3Int16_Read
  521.     ENDIF
  522.  
  523. ;
  524. ; extern TQ3Status Q3Int16_Write(TQ3Int16 data, TQ3FileObject theFile)
  525. ;
  526.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  527.         IMPORT_CFM_FUNCTION Q3Int16_Write
  528.     ENDIF
  529.  
  530. ;
  531. ; extern TQ3Status Q3Int32_Read(TQ3Int32 *data, TQ3FileObject theFile)
  532. ;
  533.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  534.         IMPORT_CFM_FUNCTION Q3Int32_Read
  535.     ENDIF
  536.  
  537. ;
  538. ; extern TQ3Status Q3Int32_Write(TQ3Int32 data, TQ3FileObject theFile)
  539. ;
  540.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  541.         IMPORT_CFM_FUNCTION Q3Int32_Write
  542.     ENDIF
  543.  
  544. ;
  545. ; extern TQ3Status Q3Uns64_Read(TQ3Uns64 *data, TQ3FileObject theFile)
  546. ;
  547.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  548.         IMPORT_CFM_FUNCTION Q3Uns64_Read
  549.     ENDIF
  550.  
  551. ;
  552. ; extern TQ3Status Q3Uns64_Write(TQ3Uns64 data, TQ3FileObject theFile)
  553. ;
  554.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  555.         IMPORT_CFM_FUNCTION Q3Uns64_Write
  556.     ENDIF
  557.  
  558. ;
  559. ; extern TQ3Status Q3Int64_Read(TQ3Int64 *data, TQ3FileObject theFile)
  560. ;
  561.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  562.         IMPORT_CFM_FUNCTION Q3Int64_Read
  563.     ENDIF
  564.  
  565. ;
  566. ; extern TQ3Status Q3Int64_Write(TQ3Int64 data, TQ3FileObject theFile)
  567. ;
  568.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  569.         IMPORT_CFM_FUNCTION Q3Int64_Write
  570.     ENDIF
  571.  
  572. ;
  573. ; extern TQ3Status Q3Float32_Read(TQ3Float32 *data, TQ3FileObject theFile)
  574. ;
  575.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  576.         IMPORT_CFM_FUNCTION Q3Float32_Read
  577.     ENDIF
  578.  
  579. ;
  580. ; extern TQ3Status Q3Float32_Write(TQ3Float32 data, TQ3FileObject theFile)
  581. ;
  582.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  583.         IMPORT_CFM_FUNCTION Q3Float32_Write
  584.     ENDIF
  585.  
  586. ;
  587. ; extern TQ3Status Q3Float64_Read(TQ3Float64 *data, TQ3FileObject theFile)
  588. ;
  589.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  590.         IMPORT_CFM_FUNCTION Q3Float64_Read
  591.     ENDIF
  592.  
  593. ;
  594. ; extern TQ3Status Q3Float64_Write(TQ3Float64 data, TQ3FileObject theFile)
  595. ;
  596.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  597.         IMPORT_CFM_FUNCTION Q3Float64_Write
  598.     ENDIF
  599.  
  600. ;
  601. ; extern TQ3Size Q3Size_Pad(TQ3Size size)
  602. ;
  603.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  604.         IMPORT_CFM_FUNCTION Q3Size_Pad
  605.     ENDIF
  606.  
  607. ; * Pass a pointer to a buffer of kQ3StringMaximumLength bytes
  608.  
  609. ;
  610. ; extern TQ3Status Q3String_Read(char *data, unsigned long *length, TQ3FileObject theFile)
  611. ;
  612.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  613.         IMPORT_CFM_FUNCTION Q3String_Read
  614.     ENDIF
  615.  
  616. ;
  617. ; extern TQ3Status Q3String_Write(const char *data, TQ3FileObject theFile)
  618. ;
  619.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  620.         IMPORT_CFM_FUNCTION Q3String_Write
  621.     ENDIF
  622.  
  623. ;  
  624. ; * This call will read Q3Size_Pad(size) bytes,
  625. ; *    but only place size bytes into data.
  626.  
  627. ;
  628. ; extern TQ3Status Q3RawData_Read(unsigned char *data, unsigned long size, TQ3FileObject theFile)
  629. ;
  630.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  631.         IMPORT_CFM_FUNCTION Q3RawData_Read
  632.     ENDIF
  633.  
  634. ;  
  635. ; * This call will write Q3Size_Pad(size) bytes,
  636. ; *    adding 0's to pad to the nearest 4 byte boundary.
  637.  
  638. ;
  639. ; extern TQ3Status Q3RawData_Write(const unsigned char *data, unsigned long size, TQ3FileObject theFile)
  640. ;
  641.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  642.         IMPORT_CFM_FUNCTION Q3RawData_Write
  643.     ENDIF
  644.  
  645. ; ******************************************************************************
  646. ; **                                                                              **
  647. ; **                        Convenient Primitives Routines                         **
  648. ; **                                                                              **
  649. ; ****************************************************************************
  650.  
  651. ;
  652. ; extern TQ3Status Q3Point2D_Read(TQ3Point2D *point2D, TQ3FileObject theFile)
  653. ;
  654.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  655.         IMPORT_CFM_FUNCTION Q3Point2D_Read
  656.     ENDIF
  657.  
  658. ;
  659. ; extern TQ3Status Q3Point2D_Write(const TQ3Point2D *point2D, TQ3FileObject theFile)
  660. ;
  661.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  662.         IMPORT_CFM_FUNCTION Q3Point2D_Write
  663.     ENDIF
  664.  
  665. ;
  666. ; extern TQ3Status Q3Point3D_Read(TQ3Point3D *point3D, TQ3FileObject theFile)
  667. ;
  668.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  669.         IMPORT_CFM_FUNCTION Q3Point3D_Read
  670.     ENDIF
  671.  
  672. ;
  673. ; extern TQ3Status Q3Point3D_Write(const TQ3Point3D *point3D, TQ3FileObject theFile)
  674. ;
  675.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  676.         IMPORT_CFM_FUNCTION Q3Point3D_Write
  677.     ENDIF
  678.  
  679. ;
  680. ; extern TQ3Status Q3RationalPoint3D_Read(TQ3RationalPoint3D *point3D, TQ3FileObject theFile)
  681. ;
  682.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  683.         IMPORT_CFM_FUNCTION Q3RationalPoint3D_Read
  684.     ENDIF
  685.  
  686. ;
  687. ; extern TQ3Status Q3RationalPoint3D_Write(const TQ3RationalPoint3D *point3D, TQ3FileObject theFile)
  688. ;
  689.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  690.         IMPORT_CFM_FUNCTION Q3RationalPoint3D_Write
  691.     ENDIF
  692.  
  693. ;
  694. ; extern TQ3Status Q3RationalPoint4D_Read(TQ3RationalPoint4D *point4D, TQ3FileObject theFile)
  695. ;
  696.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  697.         IMPORT_CFM_FUNCTION Q3RationalPoint4D_Read
  698.     ENDIF
  699.  
  700. ;
  701. ; extern TQ3Status Q3RationalPoint4D_Write(const TQ3RationalPoint4D *point4D, TQ3FileObject theFile)
  702. ;
  703.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  704.         IMPORT_CFM_FUNCTION Q3RationalPoint4D_Write
  705.     ENDIF
  706.  
  707. ;
  708. ; extern TQ3Status Q3Vector2D_Read(TQ3Vector2D *vector2D, TQ3FileObject theFile)
  709. ;
  710.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  711.         IMPORT_CFM_FUNCTION Q3Vector2D_Read
  712.     ENDIF
  713.  
  714. ;
  715. ; extern TQ3Status Q3Vector2D_Write(const TQ3Vector2D *vector2D, TQ3FileObject theFile)
  716. ;
  717.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  718.         IMPORT_CFM_FUNCTION Q3Vector2D_Write
  719.     ENDIF
  720.  
  721. ;
  722. ; extern TQ3Status Q3Vector3D_Read(TQ3Vector3D *vector3D, TQ3FileObject theFile)
  723. ;
  724.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  725.         IMPORT_CFM_FUNCTION Q3Vector3D_Read
  726.     ENDIF
  727.  
  728. ;
  729. ; extern TQ3Status Q3Vector3D_Write(const TQ3Vector3D *vector3D, TQ3FileObject theFile)
  730. ;
  731.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  732.         IMPORT_CFM_FUNCTION Q3Vector3D_Write
  733.     ENDIF
  734.  
  735. ;
  736. ; extern TQ3Status Q3Matrix4x4_Read(TQ3Matrix4x4 *matrix4x4, TQ3FileObject theFile)
  737. ;
  738.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  739.         IMPORT_CFM_FUNCTION Q3Matrix4x4_Read
  740.     ENDIF
  741.  
  742. ;
  743. ; extern TQ3Status Q3Matrix4x4_Write(const TQ3Matrix4x4 *matrix4x4, TQ3FileObject theFile)
  744. ;
  745.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  746.         IMPORT_CFM_FUNCTION Q3Matrix4x4_Write
  747.     ENDIF
  748.  
  749. ;
  750. ; extern TQ3Status Q3Tangent2D_Read(TQ3Tangent2D *tangent2D, TQ3FileObject theFile)
  751. ;
  752.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  753.         IMPORT_CFM_FUNCTION Q3Tangent2D_Read
  754.     ENDIF
  755.  
  756. ;
  757. ; extern TQ3Status Q3Tangent2D_Write(const TQ3Tangent2D *tangent2D, TQ3FileObject theFile)
  758. ;
  759.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  760.         IMPORT_CFM_FUNCTION Q3Tangent2D_Write
  761.     ENDIF
  762.  
  763. ;
  764. ; extern TQ3Status Q3Tangent3D_Read(TQ3Tangent3D *tangent3D, TQ3FileObject theFile)
  765. ;
  766.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  767.         IMPORT_CFM_FUNCTION Q3Tangent3D_Read
  768.     ENDIF
  769.  
  770. ;
  771. ; extern TQ3Status Q3Tangent3D_Write(const TQ3Tangent3D *tangent3D, TQ3FileObject theFile)
  772. ;
  773.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  774.         IMPORT_CFM_FUNCTION Q3Tangent3D_Write
  775.     ENDIF
  776.  
  777. ;     This call affects only text Files - it is a no-op in binary files 
  778. ;
  779. ; extern TQ3Status Q3Comment_Write(char *comment, TQ3FileObject theFile)
  780. ;
  781.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  782.         IMPORT_CFM_FUNCTION Q3Comment_Write
  783.     ENDIF
  784.  
  785. ; ******************************************************************************
  786. ; **                                                                              **
  787. ; **                                Unknown Object                                 **
  788. ; **                                                                              **
  789. ; **        Unknown objects are generated when reading files which contain         **
  790. ; **        custom data which has not been registered in the current             **
  791. ; **        instantiation of QuickDraw 3D.                                         **
  792. ; **                                                                              **
  793. ; ****************************************************************************
  794.  
  795. ;
  796. ; extern TQ3ObjectType Q3Unknown_GetType(TQ3UnknownObject unknownObject)
  797. ;
  798.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  799.         IMPORT_CFM_FUNCTION Q3Unknown_GetType
  800.     ENDIF
  801.  
  802. ;
  803. ; extern TQ3Status Q3Unknown_GetDirtyState(TQ3UnknownObject unknownObject, TQ3Boolean *isDirty)
  804. ;
  805.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  806.         IMPORT_CFM_FUNCTION Q3Unknown_GetDirtyState
  807.     ENDIF
  808.  
  809. ;
  810. ; extern TQ3Status Q3Unknown_SetDirtyState(TQ3UnknownObject unknownObject, TQ3Boolean isDirty)
  811. ;
  812.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  813.         IMPORT_CFM_FUNCTION Q3Unknown_SetDirtyState
  814.     ENDIF
  815.  
  816.  
  817. ; ******************************************************************************
  818. ; **                                                                              **
  819. ; **                            Unknown Text Routines                             **
  820. ; **                                                                              **
  821. ; ****************************************************************************
  822.  
  823. TQ3UnknownTextData        RECORD 0
  824. objectName                 ds.l    1                ; offset: $0 (0)        ;  '\0' terminated 
  825. contents                 ds.l    1                ; offset: $4 (4)        ;  '\0' terminated 
  826. sizeof                     EQU *                    ; size:   $8 (8)
  827.                         ENDR
  828. ;
  829. ; extern TQ3Status Q3UnknownText_GetData(TQ3UnknownObject unknownObject, TQ3UnknownTextData *unknownTextData)
  830. ;
  831.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  832.         IMPORT_CFM_FUNCTION Q3UnknownText_GetData
  833.     ENDIF
  834.  
  835. ;
  836. ; extern TQ3Status Q3UnknownText_EmptyData(TQ3UnknownTextData *unknownTextData)
  837. ;
  838.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  839.         IMPORT_CFM_FUNCTION Q3UnknownText_EmptyData
  840.     ENDIF
  841.  
  842.  
  843. ; ******************************************************************************
  844. ; **                                                                              **
  845. ; **                            Unknown Binary Routines                             **
  846. ; **                                                                              **
  847. ; ****************************************************************************
  848.  
  849. TQ3UnknownBinaryData    RECORD 0
  850. objectType                 ds.l    1                ; offset: $0 (0)
  851. size                     ds.l    1                ; offset: $4 (4)
  852. byteOrder                 ds.l    1                ; offset: $8 (8)
  853. contents                 ds.l    1                ; offset: $C (12)
  854. sizeof                     EQU *                    ; size:   $10 (16)
  855.                         ENDR
  856. ;
  857. ; extern TQ3Status Q3UnknownBinary_GetData(TQ3UnknownObject unknownObject, TQ3UnknownBinaryData *unknownBinaryData)
  858. ;
  859.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  860.         IMPORT_CFM_FUNCTION Q3UnknownBinary_GetData
  861.     ENDIF
  862.  
  863. ;
  864. ; extern TQ3Status Q3UnknownBinary_EmptyData(TQ3UnknownBinaryData *unknownBinaryData)
  865. ;
  866.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  867.         IMPORT_CFM_FUNCTION Q3UnknownBinary_EmptyData
  868.     ENDIF
  869.  
  870.  
  871. ;
  872. ; extern TQ3Status Q3UnknownBinary_GetTypeString(TQ3UnknownObject unknownObject, char **typeString)
  873. ;
  874.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  875.         IMPORT_CFM_FUNCTION Q3UnknownBinary_GetTypeString
  876.     ENDIF
  877.  
  878. ;
  879. ; extern TQ3Status Q3UnknownBinary_EmptyTypeString(char **typeString)
  880. ;
  881.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  882.         IMPORT_CFM_FUNCTION Q3UnknownBinary_EmptyTypeString
  883.     ENDIF
  884.  
  885. ; ******************************************************************************
  886. ; **                                                                              **
  887. ; **                            ViewHints routines                                 **
  888. ; **                                                                              **
  889. ; **        ViewHints are an object in a metafile to give you some hints on how     **
  890. ; **        to render a scene.    You may create a view with any of the objects     **
  891. ; **        retrieved from it, or you can just throw it away.                     **
  892. ; **                                                                              **
  893. ; **        To write a view hints to a file, create a view hints object from a     **
  894. ; **        view and write the view hints.                                         **
  895. ; **                                                                              **
  896. ; ****************************************************************************
  897.  
  898. ;
  899. ; extern TQ3ViewHintsObject Q3ViewHints_New(TQ3ViewObject view)
  900. ;
  901.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  902.         IMPORT_CFM_FUNCTION Q3ViewHints_New
  903.     ENDIF
  904.  
  905. ;
  906. ; extern TQ3Status Q3ViewHints_SetRenderer(TQ3ViewHintsObject viewHints, TQ3RendererObject renderer)
  907. ;
  908.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  909.         IMPORT_CFM_FUNCTION Q3ViewHints_SetRenderer
  910.     ENDIF
  911.  
  912. ;
  913. ; extern TQ3Status Q3ViewHints_GetRenderer(TQ3ViewHintsObject viewHints, TQ3RendererObject *renderer)
  914. ;
  915.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  916.         IMPORT_CFM_FUNCTION Q3ViewHints_GetRenderer
  917.     ENDIF
  918.  
  919. ;
  920. ; extern TQ3Status Q3ViewHints_SetCamera(TQ3ViewHintsObject viewHints, TQ3CameraObject camera)
  921. ;
  922.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  923.         IMPORT_CFM_FUNCTION Q3ViewHints_SetCamera
  924.     ENDIF
  925.  
  926. ;
  927. ; extern TQ3Status Q3ViewHints_GetCamera(TQ3ViewHintsObject viewHints, TQ3CameraObject *camera)
  928. ;
  929.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  930.         IMPORT_CFM_FUNCTION Q3ViewHints_GetCamera
  931.     ENDIF
  932.  
  933. ;
  934. ; extern TQ3Status Q3ViewHints_SetLightGroup(TQ3ViewHintsObject viewHints, TQ3GroupObject lightGroup)
  935. ;
  936.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  937.         IMPORT_CFM_FUNCTION Q3ViewHints_SetLightGroup
  938.     ENDIF
  939.  
  940. ;
  941. ; extern TQ3Status Q3ViewHints_GetLightGroup(TQ3ViewHintsObject viewHints, TQ3GroupObject *lightGroup)
  942. ;
  943.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  944.         IMPORT_CFM_FUNCTION Q3ViewHints_GetLightGroup
  945.     ENDIF
  946.  
  947. ;
  948. ; extern TQ3Status Q3ViewHints_SetAttributeSet(TQ3ViewHintsObject viewHints, TQ3AttributeSet attributeSet)
  949. ;
  950.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  951.         IMPORT_CFM_FUNCTION Q3ViewHints_SetAttributeSet
  952.     ENDIF
  953.  
  954. ;
  955. ; extern TQ3Status Q3ViewHints_GetAttributeSet(TQ3ViewHintsObject viewHints, TQ3AttributeSet *attributeSet)
  956. ;
  957.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  958.         IMPORT_CFM_FUNCTION Q3ViewHints_GetAttributeSet
  959.     ENDIF
  960.  
  961. ;
  962. ; extern TQ3Status Q3ViewHints_SetDimensionsState(TQ3ViewHintsObject viewHints, TQ3Boolean isValid)
  963. ;
  964.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  965.         IMPORT_CFM_FUNCTION Q3ViewHints_SetDimensionsState
  966.     ENDIF
  967.  
  968. ;
  969. ; extern TQ3Status Q3ViewHints_GetDimensionsState(TQ3ViewHintsObject viewHints, TQ3Boolean *isValid)
  970. ;
  971.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  972.         IMPORT_CFM_FUNCTION Q3ViewHints_GetDimensionsState
  973.     ENDIF
  974.  
  975. ;
  976. ; extern TQ3Status Q3ViewHints_SetDimensions(TQ3ViewHintsObject viewHints, unsigned long width, unsigned long height)
  977. ;
  978.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  979.         IMPORT_CFM_FUNCTION Q3ViewHints_SetDimensions
  980.     ENDIF
  981.  
  982. ;
  983. ; extern TQ3Status Q3ViewHints_GetDimensions(TQ3ViewHintsObject viewHints, unsigned long *width, unsigned long *height)
  984. ;
  985.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  986.         IMPORT_CFM_FUNCTION Q3ViewHints_GetDimensions
  987.     ENDIF
  988.  
  989. ;
  990. ; extern TQ3Status Q3ViewHints_SetMaskState(TQ3ViewHintsObject viewHints, TQ3Boolean isValid)
  991. ;
  992.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  993.         IMPORT_CFM_FUNCTION Q3ViewHints_SetMaskState
  994.     ENDIF
  995.  
  996. ;
  997. ; extern TQ3Status Q3ViewHints_GetMaskState(TQ3ViewHintsObject viewHints, TQ3Boolean *isValid)
  998. ;
  999.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1000.         IMPORT_CFM_FUNCTION Q3ViewHints_GetMaskState
  1001.     ENDIF
  1002.  
  1003. ;
  1004. ; extern TQ3Status Q3ViewHints_SetMask(TQ3ViewHintsObject viewHints, const TQ3Bitmap *mask)
  1005. ;
  1006.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1007.         IMPORT_CFM_FUNCTION Q3ViewHints_SetMask
  1008.     ENDIF
  1009.  
  1010. ;
  1011. ; extern TQ3Status Q3ViewHints_GetMask(TQ3ViewHintsObject viewHints, TQ3Bitmap *mask)
  1012. ;
  1013.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1014.         IMPORT_CFM_FUNCTION Q3ViewHints_GetMask
  1015.     ENDIF
  1016.  
  1017. ;  Call Q3Bitmap_Empty when done with the mask    
  1018. ;
  1019. ; extern TQ3Status Q3ViewHints_SetClearImageMethod(TQ3ViewHintsObject viewHints, TQ3DrawContextClearImageMethod clearMethod)
  1020. ;
  1021.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1022.         IMPORT_CFM_FUNCTION Q3ViewHints_SetClearImageMethod
  1023.     ENDIF
  1024.  
  1025. ;
  1026. ; extern TQ3Status Q3ViewHints_GetClearImageMethod(TQ3ViewHintsObject viewHints, TQ3DrawContextClearImageMethod *clearMethod)
  1027. ;
  1028.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1029.         IMPORT_CFM_FUNCTION Q3ViewHints_GetClearImageMethod
  1030.     ENDIF
  1031.  
  1032. ;
  1033. ; extern TQ3Status Q3ViewHints_SetClearImageColor(TQ3ViewHintsObject viewHints, const TQ3ColorARGB *color)
  1034. ;
  1035.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1036.         IMPORT_CFM_FUNCTION Q3ViewHints_SetClearImageColor
  1037.     ENDIF
  1038.  
  1039. ;
  1040. ; extern TQ3Status Q3ViewHints_GetClearImageColor(TQ3ViewHintsObject viewHints, TQ3ColorARGB *color)
  1041. ;
  1042.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1043.         IMPORT_CFM_FUNCTION Q3ViewHints_GetClearImageColor
  1044.     ENDIF
  1045.  
  1046.  
  1047.  
  1048.     ENDIF ; __QD3DIO__ 
  1049.  
  1050.